package test1.run;

import extobject.MyObject;
import extthread.ThreadA;
import extthread.ThreadB;

public class Run {

	public static void main(String[] args) {
		MyObject object = new MyObject();
		ThreadA a = new ThreadA(object);
		a.setName("A");
		ThreadB b = new ThreadB(object);
		b.setName("B");

		a.start();
		b.start();
	}

	/**
	 * methodB()方法前未加synchronized关键字
	 * 输出结果：
	 * begin methodA threadName=A
	   begin methodB threadName=B begin time=1529378724763
	   end
	   end endTime=1529378729770
	 *
	 * methodB()方法前加synchronized关键字
	 * begin methodA threadName=A
	   end endTime=1529385237401
	   begin methodB threadName=B begin time=1529385237401
	   end
	 *
	 * 此实验得出结论：
	 * 1) A线程先持有object对象的Lock锁，B线程可以以异步的方式调用object对象中
	 * 的非synchronized类型的方法
	 * 2) A线程先持有object对象的Lock锁，B线程如果在这时调用object对象中的
	 * synchronized类型的方法则需等待，也就是同步。
	 *
	 */
}
